import os
import glob

import lit.util

# python 2.7 backwards compatibility
try:
    from shlex import quote as shell_quote
except ImportError:
    from pipes import quote as shell_quote


if config.standalone_build:
    # These tests require the update_cc_test_checks.py script from the llvm
    # source tree, so skip these tests if we are doing standalone builds.
    # These tests are only relevant to developers working with the
    # update_cc_test_checks.py tool; they don't provide any coverage
    # for any of the clang source code.
    config.unsupported = True
else:

    config.test_format = lit.formats.ShTest(execute_external=False)
    config.suffixes = ['.test']

    clang_path = os.path.join(config.clang_tools_dir, 'clang')
    extra_args = '--clang ' + shell_quote(clang_path)
    opt_path = os.path.join(config.llvm_tools_dir, 'opt')
    extra_args += ' --opt ' + shell_quote(opt_path)
    # Specify an explicit default version in UTC tests, so that the --version
    # embedded in UTC_ARGS does not change in all test expectations every time
    # the default is bumped.
    extra_args += ' --version=1'
    script_path = os.path.join(config.llvm_src_root, 'utils',
                               'update_cc_test_checks.py')
    assert os.path.isfile(script_path)
    # Windows: llvm-lit.py, Linux: llvm-lit
    if config.llvm_external_lit:
        lit = config.llvm_external_lit
    else:
        lit = shell_quote(glob.glob(os.path.join(config.llvm_tools_dir, 'llvm-lit*'))[0])
    python = shell_quote(config.python_executable)
    config.substitutions.append(
        ('%update_cc_test_checks', "%s %s %s" % (
            python, shell_quote(script_path), extra_args)))
    config.substitutions.append(
        ('%clang_tools_dir', shell_quote(config.clang_tools_dir)))
    config.substitutions.append(
        ('%lit', "%s %s -Dclang_lit_site_cfg=%s -j1 -vv" % (
            python, lit, shell_quote(config.clang_lit_site_cfg))))
